{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**通用最佳实践回顾**\n",
    "\n",
    "- 首尾 `push`/`pop` 摊还 O(1)，中段操作仍是 O(n)；中段改动频繁时考虑 `std::list`。\n",
    "- 扩容或收缩会让迭代器 / 引用 / 指针失效，遍历时优先用索引或在操作后重新获取迭代器。\n",
    "- `push_front`/`push_back` 可能移动首尾元素，持有元素引用时需谨慎，可改存 ID/索引。\n",
    "- `std::deque<bool>` 无真实引用语义，需引用时使用 `std::deque<char>` 或 `std::deque<std::uint8_t>`。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "| 序号 | 工程场景                   | 文件名                        | 说明要点                                         | 可运行示例代码       |\n",
    "| ---- | -------------------------- | ----------------------------- | ------------------------------------------------ | -------------------- |\n",
    "| 1    | 滑动窗口最大值计算         | `deque_sliding_window.cpp`    | 单调队列维护候选索引，滑动窗口 O(1) 摊还求最大值 | 示例 1：滑动窗口     |\n",
    "| 2    | 日志 / 审计缓冲            | `deque_log_buffer.cpp`        | 超过容量即丢弃最旧日志，避免频繁搬移             | 示例 2：日志缓冲     |\n",
    "| 3    | 生产者-消费者任务队列      | `deque_producer_consumer.cpp` | 首尾 push/pop 高效，适合批量生产与顺序消费       | 示例 3：任务队列     |\n",
    "| 4    | 撤销 / 重做历史            | `deque_undo_redo.cpp`         | 支持头尾裁剪历史，游标指向当前状态               | 示例 4：撤销/重做    |\n",
    "| 5    | 大体量队列调度（批量派发） | `deque_massive_queue.cpp`     | 批量入队/出队降低锁持有时间，可按块迁移任务      | 示例 5：批量任务调度 |"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 示例 1：滑动窗口最大值 (deque_sliding_window.cpp)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 示例 2：日志缓冲 (deque_log_buffer.cpp)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 示例 3：任务队列 (deque_producer_consumer.cpp)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 示例 4：撤销 / 重做历史 (deque_undo_redo.cpp)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 示例 5：批量任务调度 (deque_massive_queue.cpp)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "C++17",
   "language": "C++17",
   "name": "xcpp17"
  },
  "language_info": {
   "name": "C++17"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
